#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
 
const int N=20;
int x[N],y[N],k;
string s;
int cnt;
int vis[20];
void dfs(int num)
{
	if(vis[num])
		return;
	vis[num]=1;
	cnt++;
	for(int i=0;i<k;i++)
	{
		if(x[i]==num)
			dfs(y[i]);
	}
}
vector<int> myMul(vector<int> m,int cnt)
{
	vector<int> ret;
	int t=0;
	for(int i=0;i<m.size() || t;i++)
	{
		if(i<m.size()) t+=m[i]*cnt;
		ret.push_back(t%10);
		t/=10;
	}

	return ret;
}
void Print(vector<int>& num)
{
	int pos=num.size()-1;
	while(pos>=0 && num[pos]==0)
		pos--;
	if(pos==-1)
		cout<<0<<endl;
	while(pos>=0)
	{
		cout<<num[pos];
		pos--;
	}
	cout<<endl;
}

int main()
{
	cin>>s>>k;
	for(int i=0;i<k;i++)
		cin>>x[i]>>y[i];
	vector<int> ret;
	ret.push_back(1);
	for(int i=0;i<s.size();i++)
	{
		cnt=0;
		memset(vis,0,sizeof(vis));
		dfs(s[i]-'0');
		if(cnt)
			ret=myMul(ret,cnt);
		
		
	}
	Print(ret);
	return 0;
}
